/**
 * @name 修饰器
 * decorator
 *
 * 想给className 这个类添加一个方法，但是，需要使用装饰器添加
 *
 * 1. 修饰器就是一个函数
 * 2. 用@调用修饰器
 * 3. 修饰器用在class类上
 *
 *  * as 断言 // 我断定你有
 */

function myDecorator(flag: boolean) {
  if (flag) {
    return (constructor: any) => {
      constructor.prototype.showStudent = function () {
        console.log('我是 showStudent方法')
      }
    }
  } else {
    return (constructor: any) => {
      constructor.prototype.showMyFriend = function () {
        console.log('我是 showMyFriend')
      }
    }
  }
}

@myDecorator(false)
class ClassName {}

let c = new ClassName()
;(c as any).showMyFriend()
